e64a0f1ebf1d6ad4147f6fd0e546a90c780d2028,katharsis-core/src/main/java/io/katharsis/queryParams/DefaultQueryParamsParser.java,DefaultQueryParamsParser,parseFiltersParameters,#Map#,29

Before Change


    @Override
    public Map<String, Set<String>> parseFiltersParameters(final Map<String, Set<String>> queryParams) {
        String filterKey = RestrictedQueryParamsMembers.filter.name();
        return filterQueryParamsByKey(queryParams, filterKey);
    }

    @Override

After Change


     */
    protected TypedParams<FilterParams> parseFiltersParameters(final QueryParamsParserContext context) {
        String filterKey = RestrictedQueryParamsMembers.filter.name();
        Map<String, Set<String>> filters = filterQueryParamsByKey(context, filterKey);

        Map<String, Map<String, Set<String>>> temporaryFiltersMap = new LinkedHashMap<>();

        for (Map.Entry<String, Set<String>> entry : filters.entrySet()) {

            List<String> propertyList = buildPropertyListFromEntry(entry, filterKey);

            String resourceType = propertyList.get(0);
            String propertyPath = StringUtils.join(".", propertyList.subList(1, propertyList.size()));

            if (temporaryFiltersMap.containsKey(resourceType)) {
                Map<String, Set<String>> resourceParams = temporaryFiltersMap.get(resourceType);
                resourceParams.put(propertyPath, Collections.unmodifiableSet(entry.getValue()));
            } else {
                Map<String, Set<String>> resourceParams = new LinkedHashMap<>();
                temporaryFiltersMap.put(resourceType, resourceParams);
                resourceParams.put(propertyPath, entry.getValue());
            }
        }

        Map<String, FilterParams> decodedFiltersMap = new LinkedHashMap<>();

        for (Map.Entry<String, Map<String, Set<String>>> resourceTypesMap : temporaryFiltersMap.entrySet()) {
            Map<String, Set<String>> filtersMap = Collections.unmodifiableMap(resourceTypesMap.getValue());
            decodedFiltersMap.put(resourceTypesMap.getKey(), new FilterParams(filtersMap));
        }

        return new TypedParams<>(Collections.unmodifiableMap(decodedFiltersMap));
    }

    /**